<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  <meta name="renderer" content="webkit" />
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
  <title>千峰教育大前端Vue教学</title>
  <!-- 引入vue -->
  <script src="https://cdn.staticfile.org/vue/2.6.10/vue.min.js"></script>
</head>

<body style="margin:100px;font-size:22px;">
  <!-- 定义一个容器 -->
  <div id="app">
    <!-- 入口只加载App -->
    <App></App>
  </div>
  <script>
    // 定义PhoneInput组件
    const PhoneInput = {
      template: `
      <input :value="value" @input="onInput"/>
      `,
      props: ['value'], // 声明属性
      emits: ['input'], // 声明事件
      methods: {
        onInput(e) {
          let val = e.target.value; // 获取到输入的内容
          if (!/^phone:/.test(val)) {
            val = `phone:${val}`;
          }
          this.$emit('input', val); // 发送给父组件
        }
      }
    };
    // 定义App组件
    const App = {
      template: `
      <div>
        <div>你输入的电话号码是： {{number}}</div>
        <div><PhoneInput v-model="number" /></div>
      </div>
      `,
      components: {
        PhoneInput,
      },
      data() {
        return {
          number: '',
        };
      },
    };

    // 创建入口为App应用，其他的都为组件
    new Vue({
      el: '#app', // 挂载到 id 为 app的DOM上
      components: { App }
    });
  </script>
</body>

</html>